package com.ohc.算法.排序;

import com.ohc.工具类.tools.Integers;

/**
 * @Author 欧皓辰
 * @Date 2021/12/21 23:32
 * @Version 1.0
 */
public class 选择排序 {
    /**
     * 从序列中找出最大的那个元素，然后与最末尾的元素交换位置
     * 执行完一轮，最末尾那个元素就是最大的那个元素。。。
     * 选择排序的稳定性
     */
    public static void main(String[] args) {
        Integer[] integers = Integers.random(10, 1, 100);
        selectionSort(integers);
        for (int i = 0; i < integers.length; i++) {
            Integer integer = integers[i];
            System.out.println("integer = " + integer);
        }
    }

    public static void selectionSort(Integer[] array) {
        for (int end = array.length - 1; end > 0; end--) {  // 执行一轮就减一。
            int maxIndex = 0; // 假设0位最大索引值
            for (int begin = 0; begin < end; begin++) {  // 进行比较的逻辑
                if (array[maxIndex] < array[begin]) {  // 如果假设的最大值小于遍历的就记录
                    maxIndex = begin;
                }
            }
//             到这里就找到了最大值的索引 ，然后进行交换
            int t = array[maxIndex];
            array[maxIndex] = array[end];
            array[end] = t;
        }


    }

}
